#pragma once
#include "Model.h"

class Entity {
public:
	/* Constructor / Deconstructor */
	Entity(void);
	~Entity(void);

	/* Move Functions */
	void MoveBy(VectorXYZ v);
	void MoveBy(float XCoord =0, float YCoord =0, float ZCoord =0);

	void MoveTo(VectorXYZ v);
	void MoveTo(float XCoord =0, float YCoord =0, float ZCoord =0);

	/* Rotate Functions */
	void RotateBy(float angle, VectorXYZ axis);
	void RotateBy(float angle, float XCoord, float YCoord, float ZCoord);
	
	void RotateTo(VectorXYZ axis);

	/* Convenience Functions */
	void Pitch(float angle);
	void Yaw(float angle);
	void Roll(float angle);

	/* Camera Reference */
	virtual float MinimumCameraDistance();

	/* Data Members */
	VectorXYZ position;
	VectorXYZ orientation;
	VectorXYZ up;
};
